﻿using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using GENERIC.ViewModel.Commad;
using GENERIC.ViewModel.Event;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;

namespace GENERIC.ViewModels
{
    public class MessageBoxViewModel : ViewModelBase
    {
        #region Evènements

        /// <summary>
        /// Evènement appelé lorsqu'il faut fermer la boîte de dialogue
        /// </summary>
        public event EventHandler<DialogResultEventArgs> Closed;

        #endregion

        #region Members

        private string _text;
        private string _header;
        private ICommand _okCommand;
        private ICommand _noCommand;
        private ICommand _cancelCommand;

        #endregion
        
        #region Properties


        /// <summary>
        /// Obtient ou définit le texte à afficher
        /// </summary>
        public string Text
        {
            get { return _text; }
            set
            {
                if (_text != value)
                {
                    _text = value;
                    RaisePropertyChanged<string>(() => Text);
                }
            }
        }
        
        /// <summary>
        /// Obtient ou définit le texte de l'entête
        /// </summary>
        public string Header
        {
            get { return _header; }
            set
            {
                if (_header != value)
                {
                    _header = value;
                    RaisePropertyChanged<string>(()=>Header);
                }
            }
        }
        
        /// <summary>
        /// Obtient la commande pour le bouton OK / Oui
        /// </summary>
        public ICommand OkCommand
        {
            get
            {
                if (_okCommand == null)
                {
                    _okCommand = new RelayCommand(() => OnClosed(true));
                }
                return _okCommand;
            }
        }

        #endregion

        #region Méthodes

        /// <summary>
        /// Appelle l'évènement Closed
        /// </summary>
        /// <param name="dialogResult">résultat</param>
        protected virtual void OnClosed(bool? dialogResult)
        {
            //this.InvokeEvent(Closed, new DialogResultEventArgs(dialogResult));
        }

        #endregion
    }
}